package com.ihr360.insurance.service;

import com.ihr360.commons.vo.PageData;
import com.ihr360.excel.entity.ExportParams;
import com.ihr360.insurance.entity.request.MemberPlanReq;
import com.ihr360.insurance.entity.response.LedgerResponse;
import com.ihr360.insurance.entity.vo.MemberPlanVo;
import com.ihr360.insurance.model.dto.ledger.IncreaseMemberPlan;
import com.ihr360.rest.service.SimpleRestService;

import java.util.List;

/**
 * @author Stone.Shi
 * @description 社保公积金数据服务
 * @date 2018-02-01 18:25:24.
 */
public interface IncreaseMemberService extends SimpleRestService<IncreaseMemberPlan, Long> {

    /**
     * 获取增员人员
     *
     * @param companyId
     * @param userId
     * @param req
     * @param authStaffIds
     * @return
     */
    PageData<MemberPlanVo> getIncreaseMember(String companyId, String userId,
                                             MemberPlanReq req, List<String> authStaffIds);

    /**
     * 将增员员工添加到相应台账中
     *
     * @param companyId
     * @param userId
     * @param ledgerYear
     * @param ledgerMonth
     * @param memberPlanVo
     * @return
     */
    LedgerResponse addIncreaseStaffToLedger(String companyId, String userId,
                                            Integer ledgerYear, Integer ledgerMonth,
                                            MemberPlanVo memberPlanVo);

    /**
     * 将增员员工添加到相应台账中
     *
     * @param companyId
     * @param userId
     * @param ledgerYear
     * @param ledgerMonth
     * @param memberPlanVo
     * @return
     */
    boolean deleteIncreaseStaffFromLedger(String companyId, String userId,
                                          Integer ledgerYear, Integer ledgerMonth,
                                          MemberPlanVo memberPlanVo);

    /**
     * 关闭台账之后，保存当月的增员记录
     *
     * @param ledgerSummaryId
     * @param authStaffIds
     */
    void saveIncreaseMemberRecords(Long ledgerSummaryId,
                                   List<String> authStaffIds);

    /**
     * 删除当月的增员记录
     *
     * @param companyId
     * @param userId
     * @param ledgerYear
     * @param ledgerMonth
     */
    void deleteIncreaseMemberRecords(String companyId, String userId, Integer ledgerYear, Integer ledgerMonth);


    /**
     * 获取导出的数据
     *
     * @param companyId
     * @param userId
     * @param req
     * @param authStaffIds
     */
    ExportParams<List<Object>> getExportExcelData(String companyId, String userId, MemberPlanReq req, List<String> authStaffIds);

}
